package cn.wolfcode.wolf2w.util;

import lombok.Getter;

/*
*   redis中key的管理
* 枚举类：构造器私有的，不能创建对象
* 枚举类型一旦定义完成，实例对象个数是固定的，不会变动
* 枚举类型是空参构造器创建，是固定的枚举类型，不能使用set方法
* 如果定义了全参构造器，固定的枚举类型则要调用全参构造器创建对象
* */
@Getter
public enum RedisKeys{


    VISITOR_USER_VO("visitor_user_vo",-1L),

    //今日访问量key
    VISITOR_TODAYVIEW("visitor_todayview",-1L),

    //短信验证码key的实例对象
    VERIFY_CODE("verify_code",Consts.VERIFY_CODE_VAI_TIME * 60L),

    //用户收藏key的实例对象
    STRATEGY_USER_FAVOR("strategy_user_favor",-1L),

    //用户点赞（顶）key的实例对象
    STRATEGY_USER_THUMBUP("strategy_user_thumbup",-1L),

    //攻略id
    STRATEGY_STATIS_VO("strategy_statis_vo",-1L),

    //Token(令牌)key的实例对象
    USER_LOGIN("user_login",Consts.USER_INFO_TOKEN_VAI_TIME * 60L);
    //定义key的前缀
    private String prefix;
    //定义key的有效时间，单位是秒
    private Long time;

    //构造器
    private RedisKeys(String prefix, Long time) {
        this.prefix = prefix;
        this.time = time;
    }

    public String join(String... values){
        StringBuilder sb = new StringBuilder(80);
        sb.append(this.prefix);
        for (String value : values){
            sb.append(":").append(value);
        }
        return sb.toString();
    }
}
